package com.example.limit.controller;

import com.example.limit.aspect.RateLimit;
import com.example.limit.fallback.DefaultRateLimiterHandler;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


/**
 * java系统设计题：系统有模块A、B、C、D各模块的处理能力不同.
 * A模块只能支撑100QPS，B能支撑200QPS，C能支撑300QPS，D能支撑400QPS.
 * 请你设计一个通用限流模块支持A、B、C、D的并发能力
 */
@RestController
@RequestMapping("/api")
public class BusinessController {

    @GetMapping("/moduleA")
    @RateLimit(module = "A", fallback = DefaultRateLimiterHandler.class)
    public String moduleA() {
        return "Module A OK";
    }

}